﻿using Microsoft.Extensions.Options;

namespace K3Cloud.WebApi.Core.IoC
{
    /// <summary>
    /// K3Config 用于配置金蝶云星空第三方系统登录授权信息。
    /// 支持依赖注入，兼容IOptions<T>。
    /// </summary>
    public sealed class K3Config : IOptions<K3Config>
    {
        /// <summary>
        /// 服务器地址。例如：https://k3cloud.xxx.com
        /// </summary>
        public string ServerHost { get; set; }

        /// <summary>
        /// 数据中心Id（账套ID），由金蝶云星空系统提供。
        /// </summary>
        public string AcctId { get; set; }

        /// <summary>
        /// 集成用户账号。
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 用户密码（无应用密钥时必填）。
        /// </summary>
        public string? Password { get; set; }

        /// <summary>
        /// 应用Id（ISV集成时必填）。
        /// </summary>
        public string AppID { get; set; }

        /// <summary>
        /// 应用密钥（ISV集成时必填）。
        /// </summary>
        public string AppSecret { get; set; }

        /// <summary>
        /// 区域设置标识号，默认2052（中文简体）。
        /// </summary>
        public int LCID { get; set; } = 2052;

        /// <summary>
        /// 连接有效时间（单位:分钟）。0或不设置则每次连接都进行登录验证。
        /// </summary>
        public int ConnectionValidTime { get; set; }

        /// <summary>
        /// IOptions接口实现，返回自身。
        /// </summary>
        public K3Config Value => this;
    }

    /// <summary>
    /// IocConst 提供IoC相关常量。
    /// </summary>
    public class IocConst
    {
        /// <summary>
        /// K3Cloud客户端上下文Key（用于AsyncLocal等场景）。
        /// </summary>
        public const string CLIENT_KEY = "{EA97F979-5B45-4EFA-95D1-6208F8323308}";
    }
}